# SYNOPSIS
#
#   CHECK_XERCESC
#
# DESCRIPTION
#
#   Define $HAVE_XERCESC, $XERCESC_CPPFLAGS, and $XERCESC_LDFLAGS to
#   signify whether Xerces is available.
#   
# LAST MODIFICATION
#
#   2007-12-10
#
# COPYLEFT
#
#   Copyright (c) 2007 Mamadou Gueye <mamadou77@gmail.com>
#
#   This program is free software; you can redistribute it and/or
#   modify it under the terms of the GNU General Public License as
#   published by the Free Software Foundation; either version 2 of the
#   License, or (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful, but
#   WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#   General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software
#   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
#   02111-1307, USA.
#
#   As a special exception, the respective Autoconf Macro's copyright
#   owner gives unlimited permission to copy, distribute and modify the
#   configure scripts that are the output of Autoconf when processing
#   the Macro. You need not follow the terms of the GNU General Public
#   License when using or distributing such scripts, even though
#   portions of the text of the Macro appear in them. The GNU General
#   Public License (GPL) does govern all other use of the material that
#   constitutes the Autoconf Macro.
#
#   This special exception to the GPL applies to versions of the
#   Autoconf Macro released by the Autoconf Macro Archive. When you
#   make and distribute a modified version of the Autoconf Macro, you
#   may extend this special exception to the GPL to apply to your
#   modified version as well.

AC_DEFUN([CHECK_XERCESC],
[
AC_ARG_WITH([xercesc],
            AS_HELP_STRING([--with-xercesc@<:@=DIR@:>@], [use xercesc (default is yes) - it is possible to specify the root directory for xercesc (optional)]),
            [
             if test "$withval" = "no"; then
		want_xercesc="no"
             elif test "$withval" = "yes"; then
             want_xercesc="yes"
             xercesc_rootdir=""
             else
	        want_xercesc="yes"
                xercesc_rootdir="$withval"
	     fi
            ],
            [want_xercesc="yes"])
if test "x$want_xercesc" = "xyes"; then
   if test "$xercesc_rootdir" != ""; then
      XERCESC_LDFLAGS="-L$xercesc_rootdir/lib -lxerces-c"
      XERCESC_CPPFLAGS="-I$xercesc_rootdir/include"
   else
      for xercesc_rootdir in /usr /usr/local /usr/share; do
          if test -d "$xercesc_rootdir/include/xercesc" && test -r "$xercesc_rootdir/include/xercesc"; then
             XERCESC_LDFLAGS="-L$xercesc_rootdir/lib -lxerces-c"
             XERCESC_CPPFLAGS="-I$xercesc_rootdir/include"
             break;
          fi
      done
   fi
   CPPFLAGS_TMP="$CPPFLAGS"
   CPPFLAGS="$CPPFLAGS $XERCESC_CPPFLAGS"
   export CPPFLAGS
   
   LDFLAGS_TMP="$LDFLAGS"
   LDFLAGS="$LDFLAGS $XERCESC_LDFLAGS"
   export LDFLAGS
   
   AC_LANG_PUSH(C++)
   AC_CACHE_CHECK([for Xerces-c], [ac_cv_xercesc], 
   		  [
                   AC_TRY_LINK([
                                #include <xercesc/util/PlatformUtils.hpp>
                                #ifdef XERCES_CPP_NAMESPACE_USE
                                XERCES_CPP_NAMESPACE_USE
                                #endif
	                       ], 
                   [
                    try
                    {
                     XMLPlatformUtils::Initialize();
                    }
                    catch (...)
                    {
                     // ...
                    }
                    XMLPlatformUtils::Terminate();
	            ], 
                    [ac_cv_xercesc=yes], [ac_cv_xercesc=no])
                   ])
    AC_LANG_POP([C++])
    if test "$ac_cv_xercesc" == "no"; then
      AC_MSG_ERROR([[xercesc not found, please set xercesc root installation directory]])
   else
      AC_DEFINE(HAVE_XERCESC, 1, [define if the xerces library is available])
      AC_SUBST(XERCESC_LDFLAGS)
      AC_SUBST(XERCESC_CPPFLAGS)
   fi
   CPPFLAGS="$CPPFLAGS_TMP"
   LDFLAGS="$LDFLAGS_TMP"
fi
])

